今天會處理要讓用戶下載的app部分,並加上自己的數位簽署,讓google play得以辨識app的開發者
好的,那我們就開始吧!
.keystore
.keystore
內記錄了開發者數位簽署資訊,一個keystore可以簽署多個app。使用此keystore簽署app,視同開發者本人認證是自己開發的,所以是機敏資訊,切勿外流也不要隨著專案commit喔!
產生keystore的流程:
在Terminal進入想要存放keystore的位置
在當前路徑之下產生key,透過工具keytool(隨附在之前設定Android環境時下載的JDK中)產生:
$ keytool -genkey -v -keystore YOUR_KEYSTORE_NAME.jks -alias ALIAS_OF_KEY -keyalg RSA -keysize 2048 -validity 10000
-keystore
: 設定我們想命名的.keystore檔案名稱-alias
: 設定對這個key的代稱接著keytool會引導你在Terminal中設定key內的相關資料
全部設定完成後,就會產生一個.keystore
檔案在當前的路徑下。
如果系統出現報錯:
The operation couldn’t be completed. Unable to locate a Java Runtime that supports (null).
Please visit http://www.java.com for information on installing Java.
代表目前環境並沒有安裝或無法定位JDK,
$ brew install openJDK
.bashrc
或.zshrc
中
$ open ~/.bashrc
# 或
$ open ~/.zshrc
.bashrc
或.zshrc
中加入當前openjdk所在路徑
export JAVA_HOME="YOUR_OPENJDK_PATH"
$ source ~/.zshrc
keytool
相關指令應該就可以了key.properties
key.properties
會放在當前專案的/android之下,告訴android打包時該用哪個key、key的密碼等等資訊,由於密碼為明碼輸入,key.properties
同樣不可外流,也不可隨著專案commit!在Apod專案的/android
路徑之下,加入key.properties
在key.properties
中填入對應的資料
storePassword=keystore的密碼
keyPassword=key的密碼,由於這次是用keytool產生的,會跟keystore一樣
keyAlias=下指令時輸入的的ALIAS_OF_KEY
storeFile=在本機存放.keystore的位置
即可準備打包
/android/app/build.gradle
設定如下,讓gradle讀到我們剛剛設定的key.properties
def keystoreProperties = new Properties()
def keystorePropertiesFile = rootProject.file('key.properties') // 讀取剛才放在/android下的key.properties檔案
if (keystorePropertiesFile.exists()) {
keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
}
buildTypes
區域加入release
相關設定,並新增signingConfigs
(簽署設定),將剛才的keystoreProperties
加進去。
signingConfigs {
release {
keyAlias keystoreProperties['keyAlias']
keyPassword keystoreProperties['keyPassword']
storeFile keystoreProperties['storeFile'] ? file(keystoreProperties['storeFile']) : null
storePassword keystoreProperties['storePassword']
}
}
buildTypes {
release {
signingConfig signingConfigs.release // 將signingConfigs.debug改為.release
}
}
.apk
檔,但是自2021年8月起,所有上架的檔案都必須為appbundle(.aab
)形式。在Terminal下指令
$ flutter build appbundle
gradle就會開始幫我們簽署並打包成appbundle。看到以下訊息就代表建構成功,檔案放在build/app/outputs/bundle/release/app-release.aab
。今天進行了以下步驟,準備好供下載的appbundle:
keystore
gradle
讀取keystore
並依此設定signingConfig
明天一起來完成android上架的最後一關吧~